#!/bin/bash

# 错误退出函数
die() { 
    echo "$*" >&2 
    exit 1 
}

# 获取本机IP地址
get_local_ip() {
    ip -o -4 addr show | awk '{print $4}' | cut -d'/' -f1 | grep -v '127.0.0.1' | head -n1
}

# 检查 Docker 是否安装
echo "检查 Docker 是否安装..."
if ! command -v docker &> /dev/null; then
    die "Docker 未安装，请先安装 Docker"
fi

# 检查 Docker Compose（兼容新旧版本）
echo "检查 Docker Compose 是否可用..."
if ! (docker compose version &> /dev/null || docker-compose version &> /dev/null); then
    die "Docker Compose 未安装，请安装 Docker Compose V1 或 V2"
fi

# 检测群辉系统的 Docker 数据目录
echo "查找 Docker 数据目录..."
DOCKER_DIRS=$(find /volume* -maxdepth 1 -type d -name "docker" 2>/dev/null)

if [ -z "$DOCKER_DIRS" ]; then
    die "未找到 /docker 目录，请确认 Docker 是否已安装。"
fi

# 选择剩余空间最大的存储卷
SELECTED_DIR=""
MAX_SPACE=0

for DIR in $DOCKER_DIRS; do
    SPACE=$(df -k "$DIR" | awk 'NR==2 {print $4}')
    if [ "$SPACE" -gt "$MAX_SPACE" ]; then
        MAX_SPACE="$SPACE"
        SELECTED_DIR="$DIR"
    fi
done

echo "选择的 /docker 目录为: $SELECTED_DIR"

# 创建 /docker/ddnsgo 目录
DDNSGO_DIR="$SELECTED_DIR/ddnsgo"
if [ ! -d "$DDNSGO_DIR" ]; then
    mkdir -p "$DDNSGO_DIR" || die "无法创建目录 $DDNSGO_DIR"
else
    echo "目录 $DDNSGO_DIR 已存在"
fi

# 切换到 DDNS-GO 目录
cd "$DDNSGO_DIR" || die "无法切换到目录 $DDNSGO_DIR"

# 检查是否已存在容器
if docker ps -a --format '{{.Names}}' | grep -q '^ddns-go$'; then
    echo "发现已存在的 ddns-go 容器，正在删除..."
    docker stop ddns-go >/dev/null 2>&1
    docker rm ddns-go >/dev/null 2>&1
fi

# 拉取并运行容器
# echo "拉取 DDNS-GO Docker 镜像..."
# docker pull jeessy/ddns-go || die "拉取 DDNS-GO 镜像失败"

echo "启动 DDNS-GO 容器..."
docker run -d \
    --name ddns-go \
    --restart always \
    --net=host \
    -v "$DDNSGO_DIR":/root \
    jeessy/ddns-go || die "启动 DDNS-GO 容器失败"

LOCAL_IP=$(get_local_ip)
echo "DDNS-GO 安装完成！"
echo "请访问 http://${LOCAL_IP}:9876 进行配置"